package com.megalith.service;

import com.megalith.dto.ActivityRebackDTO;
import com.megalith.dto.ManagerVerifyDTO;
import com.megalith.dto.StaffApplyDTO;
import com.megalith.dto.StaffLeaveTicketDTO;
import com.megalith.vo.HistoricActivityInstanceEntityVO;
import com.megalith.vo.HistoricTaskInstanceVO;
import com.megalith.vo.Result;
import com.megalith.vo.TaskEntityVO;

import java.util.List;

/**
 * @Description
 * @Author lfp
 * @Date 2022/7/15
 * @Version 1.0
 */
public interface HolidayService {

    /**
    *@Description 查询请假流程所有现有流程task集合信息
    *@Author lfp
    *@Date 2022/7/15
    *@param
    *@Return
    */
    List<TaskEntityVO> queryActiveHolidayProcessTaskList();

    /**
    *@Description 根据员工标识，发起请假流程
    *@Author lfp
    *@Date 2022/7/15
    *@param applyDTO
    *@Return
    */
    String startHolidayProcess(StaffApplyDTO applyDTO);

    /**
    *@Description 填写请假申请单
    *@Author lfp
    *@Date 2022/7/15
    *@param leaveTicketDTO
    *@Return
    */
    Result fillHolidayTicket(StaffLeaveTicketDTO leaveTicketDTO);

    /**
    *@Description 部门经理/总经理审批
    *@Author lfp
    *@Date 2022/7/15
    *@param managerVerifyDTO
    *@Return
    */
    Result managerVerifyHolidayTask(ManagerVerifyDTO managerVerifyDTO);

    /**
    *@Description 流程回退
    *@Author lfp
    *@Date 2022/7/15
    *@param rebackDTO
    *@Return
    */
    void processActivityReback(ActivityRebackDTO rebackDTO);

    /**
    *@Description 根据流程实例编号，查询历史任务信息
    *@Author lfp
    *@Date 2022/7/15
    *@param processInstanceId
    *@Return 
    */
    List<HistoricTaskInstanceVO> queryHistoricTaskInfoList(String processInstanceId);

    /**
    *@Description 根据流程实例编号，查询历史活动信息
    *@Author lfp
    *@Date 2022/7/15
    *@param processInstanceId
    *@Return
    */
    List<HistoricActivityInstanceEntityVO> queryHistoricActivityInfoList(String processInstanceId);
}
